package org.jeecg.modules.FinanceModule.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.FinanceModule.entity.FabricDzEntity;
import org.jeecg.modules.FinanceModule.entity.ReconciliationEntity;
import org.jeecg.modules.FinanceModule.entity.InvoiceEntity;
import org.jeecg.modules.FinanceModule.entity.SupplierEntity;
import org.jeecg.modules.orderDistributeLeafletsModule.entity.sysuserOrderEntity;
import org.jeecg.modules.zonglzp.entity.ProductEntity;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Component
public interface SupplierMapper {

    //查询所有供应商列表
    IPage<SupplierEntity> getSupplierList(Page<SupplierEntity> page, @Param("companyName") String companyName, @Param("id") String id,@Param("workNo") String workNo);


    //查询供应商对账列表
    IPage<SupplierEntity> getduizhangList(Page<ReconciliationEntity> page, @Param("supplierId") String supplierId,@Param("starttime")  String starttime,@Param("endtime")  String endtime);


    //通过供应商id查询供应商详情
    SupplierEntity getduizhangdetail(@Param("supplierId") String supplierId);

    //通过供应商id查询对账金额
    String getduizhangmoney(@Param("supplierId") String supplierId);

    //查询总订单条数
    int getordernums(@Param("supplierId") String supplierId);

    //查询供应商中供应商的开票
    IPage<InvoiceEntity> getSupplierkaipiaoList(Page<InvoiceEntity> page, @Param("supplierId") String supplierId);

    //查询供应商已开票金额和未开票金额
    String getSupplieryiInvoicemoney( @Param("supplierId") String supplierId,  @Param("i") int i);


    //查询已有对账记录的供应商列表
    IPage<SupplierEntity> getyiReconciliationSupplierList(Page<SupplierEntity> page, @Param("companyName") String companyName, @Param("id") String id,@Param("starttime") String starttime,@Param("endtime") String endtime);

    void approveoftimeduizhang(@Param("id") String id,@Param("starttime")  String starttime,@Param("endtime")  String endtime);

    //查询选中对账的那些供应商
    IPage<SupplierEntity> temporaryduizhangSupplierList(Page<SupplierEntity> page,@Param("idsString") String idsString);

    //修改结算金额
    int updatesettlementMoney(ReconciliationEntity entity);

    //查询这个供应商下所有订单的所有产品
    IPage<FabricDzEntity> getSysuserAllOrderFabric(Page<FabricDzEntity> page, @Param("sysuserId") String sysuserId,@Param("starttime") String starttime,@Param("endtime") String endtime);

     //糖果面料id查询面料信息
    HashMap<String, BigDecimal> getfabricbyid(@Param("parseInt") int parseInt);

    //修改产品的结算金额
    int updateProdsettleMoney(@Param("prodId") String prodId,@Param("fabricSettleMoney") String fabricSettleMoney);

    //查询供应商下所有订单的品类成本
    IPage<FabricDzEntity> getSysuserPingleicost(Page<FabricDzEntity> page, @Param("sysuserId") String sysuserId,@Param("starttime") String starttime,@Param("endtime") String endtime);

    //查询供应商下所有订单的工艺对账金额
    IPage<FabricDzEntity> getSysuserpaidangongyi(Page<FabricDzEntity> page, @Param("sysuserId") String sysuserId,@Param("starttime") String starttime,@Param("endtime") String endtime);

    //查询这个供应商的所有派单
    List<sysuserOrderEntity> getsysuserOrderList(@Param("s") String s,@Param("starttime") String starttime,@Param("endtime") String endtime);

    List<ProductEntity> getProductByorderSn(@Param("orderSn") String orderSn);

    void updateproductduizhang(@Param("id") String id,@Param("valueOf") String valueOf);

    //查询供应商的成本项
    List<FabricDzEntity> getchengbenxiangList(@Param("s") String sm,@Param("starttime") String starttime,@Param("endtime") String endtime);

    //修改成本项目信息
    void updatechengbenduizhang(@Param("id") int id,@Param("price") String price);

    //查询供应商的工艺
    List<FabricDzEntity> getgongyiduizhangList(@Param("s") String s,@Param("starttime") String starttime,@Param("endtime") String endtime);

    //修改供应商的工艺对账
    void updategongyiduizhang(@Param("id") int id,@Param("costPrice") String costPrice);

    //修改成本项对账结算金额
    int updatechengbengxiangMoney(@Param("parseInt") int parseInt,@Param("fabricSettleMoney") String fabricSettleMoney);

    //修改工艺对账结算金额
    int updategongyiMoney(@Param("parseInt") int parseInt,@Param("fabricSettleMoney") String fabricSettleMoney);

    //查询供应商的派单返修
    IPage<FabricDzEntity> getSysuserpaidanrepair(Page<FabricDzEntity> page, @Param("sysuserId") String sysuserId,@Param("starttime") String starttime,@Param("endtime") String endtime);

    //查询供应商的返修
    List<FabricDzEntity> getrepairduizhangList(@Param("s") String s,@Param("starttime") String starttime,@Param("endtime") String endtime);

    //修改供应商返修对账
    void updaterepairduizhang(@Param("id") int id,@Param("costPrice") String costPrice);


    int updaterepairMoney(@Param("parseInt") int parseInt,@Param("fabricSettleMoney") String fabricSettleMoney);

    //获取订单面料对账金额
    String getmianliaoduizhangmoney(@Param("supplierId") String supplierId);

    //获取供应商成本项对账金额总和
    String getchengbengxiangduizhangmoney(@Param("supplierId") String supplierId);

    //获取供应商工艺对账金额总和
    String getgongyiduizhangmoney(@Param("supplierId") String supplierId);

    //获取供应商返修对账金额总和
    String getfanxuiduizhangmoney(@Param("supplierId") String supplierId);

    //通过产品ID获取产品
    List<ProductEntity> getProductByProductId(@Param("productId") String productId);

    //通过面料id查询面料组id
    String getgourpidbyfabricId(@Param("s") String s);

    //通过面料id查询面料组中的价格
    String getgrouppricebyfabricid(@Param("s") String s);

    //通过面料id查询面料编号
    String getmianliaoCodebyId(@Param("parseInt") int parseInt);
}
